package com.changanw.jedis;

import redis.clients.jedis.params.SetParams;

/**
 * 使用redis 作为分布式锁的场景
 *
 */
public class LockTest {
    public static void main(String[] args) {
        Redis redis = new Redis();
        redis.execute(jedis -> {
            //Long setnx = jedis.setnx("k1", "v1");
            //改造设置锁和设置过期时间为一个操作，
            String setnx = jedis.set("k1","v1",new SetParams().nx().ex(5));

            if (setnx != null && "OK".equals(setnx)){
                //给锁设置一个过期时间，防止应用在运行过程中抛出异常
                //导致锁无法及时得到释放。
                //jedis.expire("k1",5);
                //继续改造

                //如果sentnx等于1说明没人占位
                jedis.set("name","changanw");
                final String name = jedis.get("name");
                System.out.println(name);
                jedis.del("k1");//释放资源
            }else {
                //有人占位，停止/暂缓  操作

            }
        });
    }
}
